package com.uraurora.crescent.advanced.tree;

/**
 * 并查集接口
 * @param <T>
 */
public interface IDisjointSet<T> {
    /**
     * 判断两个元素是否属于同一集合
     * @param a 元素a
     * @param b 元素b
     * @return true/false
     */
    boolean isConnected(T a, T b);

    /**
     * 相当于集合的add操作，将两个元素视为同一集合的元素并放入容器
     * @param a 元素a
     * @param b 元素b
     */
    void union(T a, T b);

    /**
     * 获取容器元素的个数
     * @return 获取容器元素的个数
     */
    int size();

    /**
     * 获取集合的个数，每个集合的元素互相不相关
     * @return 获取集合的个数
     */
    int unionSize();

}
